package com.lagou.mybatis.jdbc;

import java.sql.*;

/**
 * @author buddy
 * @date 2021/8/23
 */
public class JdbcDemo {

    /**
     * 问题：
     * 1. 数据库配置信息存在硬编码问题
     *      解决方案：使用配置文件
     * 2. 频繁创建、释放数据库连接
     *      解决方案：采用连接池，c3p0 ...
     *
     * 1. SQL语句、设置参数、获取结果集参数均存在硬编码问题
     *      解决方案：配置文件
     *
     * 1. 需要手动封装返回结果集，较为繁琐
     *      解决方案：利用反射或者内省技术
     *
     * */
    public void demo() {
        Connection connection = null;
        try {
            // 加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 通过驱动管理类获取数据库连接
            connection = DriverManager.getConnection("jdbc://localhost:3306/mybatis?characterEncoding=utf-8", "root", "root");
            // 定义sql语句
            String sql = "select * from user where username = ?";
            // 获取预处理 statement
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            // 设置参数
            preparedStatement.setString(1, "buddy");
            // 获取和遍历结果集
            ResultSet resultSet = preparedStatement.executeQuery();
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String userName = resultSet.getString("username");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}
